﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WpfApplication2.Helpers;
using System.Windows.Input;
using WpfApplication2.UserControls;
using System.Windows.Controls;
using WpfApplication2.SindicatoWebService;
using System.Windows;
using WpfApplication2.Views.Afiliado;
using WpfApplication2.Views.TipoOrden;
using WpfApplication2.Views.TipoPlan;
using WpfApplication2.Views;


namespace WpfApplication2.ViewModels.TipoPlan 
{
    class EditaPlanViewModel : ViewModel
    {
         public Instancias Instancias { get; set; }
        public Visibility PanelDatosVisible
        {
            get
            {
                return panelDatosVisible;
            }
            set
            {
                if (panelDatosVisible != value)
                {
                    panelDatosVisible = value;
                    RaisePropertyChanged("PanelDatosVisible");
                }
            }
        }
        private Visibility panelDatosVisible;
        public Service1SoapClient WS;
        #region properties

        public String NombreAux
        {
            get
            {
                return nombreAux;
            }
            set
            {
                if (nombreAux != value)
                {
                    nombreAux = value;
                    RaisePropertyChanged("NombreAux");
                }
            }
        }
        private String nombreAux;

        public Frame ContainerFrame
        {
            get;
            set;
        }
        public ModalDialog modalDialog
        {
            get;
            set;
        }
       
        public PropertyElement Nombre
        {
            get
            {
                return nombre;
            }
            set
            {
                if (nombre != value)
                {
                    nombre = value;
                    RaisePropertyChanged("Nombre");
                }
            }
        }
        private PropertyElement nombre;
        public PropertyElement Descripcion
        {
            get
            {
                return descripcion;
            }
            set
            {
                if (descripcion != value)
                {
                    descripcion = value;
                    RaisePropertyChanged("Descripcion");
                }
            }
        }
        private PropertyElement descripcion;
        public PropertyElement PrecioTPlan
        {
            get
            {
                return precioTPlan;
            }
            set
            {
                if (precioTPlan != value)
                {
                    precioTPlan = value;
                    RaisePropertyChanged("PrecioTPlan");
                }
            }
        }
        private PropertyElement precioTPlan;

        public PropertyElement Nombre1
        {
            get
            {
                return nombre1;
            }
            set
            {
                if (nombre1 != value)
                {
                    nombre1 = value;
                    RaisePropertyChanged("Nombre1");
                }
            }
        }
        private PropertyElement nombre1;
        public PropertyElement Descripcion1
        {
            get
            {
                return descripcion1;
            }
            set
            {
                if (descripcion1 != value)
                {
                    descripcion1 = value;
                    RaisePropertyChanged("Descripcion1");
                }
            }
        }
        private PropertyElement descripcion1;
        public PropertyElement PrecioTPlan1
        {
            get
            {
                return precioTPlan1;
            }
            set
            {
                if (precioTPlan1 != value)
                {
                    precioTPlan1 = value;
                    RaisePropertyChanged("PrecioTPlan1");
                }
            }
        }
        private PropertyElement precioTPlan1;

        public TipoPlanDTO[] Resultados
        {
            get
            {
                return resultados;
            }
            set
            {
                if (resultados != value)
                {
                    resultados = value;
                    RaisePropertyChanged("Resultados");
                }
            }
        }
        private TipoPlanDTO[] resultados;

        public TipoPlanDTO TipoPlan
        {
            get
            {
                return tipoPlan;
            }
            set
            {
                if (tipoPlan != value)
                {
                    tipoPlan = value;
                    RaisePropertyChanged("TipoPlan");
                }
            }
        }
        private TipoPlanDTO tipoPlan;

        public TipoPlanDTO PlanAux
        {
            get
            {
                return planAux;
            }
            set
            {
                if (planAux != value)
                {
                    planAux = value;
                    RaisePropertyChanged("PlanAux");
                }
            }
        }
        private TipoPlanDTO planAux;
     

        #endregion


        public EditaPlanViewModel(Instancias instancias, TipoPlanDTO TipoPlanIng)
        {
            WS = new Service1SoapClient();
            Instancias = instancias;
            TipoPlan = TipoPlanIng;
            InicializarPropiedades();
               
        }


        private void InicializarPropiedades()
        {
            PanelDatosVisible = Visibility.Collapsed;

            //Inicializacion de propiedades:
            Nombre = new PropertyElement() { Foreground = "Black", Name = "Nombre", Value = TipoPlan.Nombre };
            Descripcion = new PropertyElement() { Foreground = "Black", Name = "Descripcion", Value = TipoPlan.Descripcion };
            PrecioTPlan = new PropertyElement() { Foreground = "Black", Name = "PrecioTPlan", Value = TipoPlan.PrecioTPlan };
           
           
            //Seleccionar las propiedades que se quieren validar
            ValidationList = new List<PropertyElement>();
            Nombre.Validations.Add(ValidationType.Requerido);
            Descripcion.Validations.Add(ValidationType.Requerido);
            PrecioTPlan.Validations.Add(ValidationType.Requerido);
            ValidationList.Add(Nombre);
            ValidationList.Add(Descripcion);
            ValidationList.Add(PrecioTPlan);
        }
      
        
        private bool CanExecute()
        {
            return true;
        }
        private DelegateCommand updatePlan;
        public ICommand UpdatePlan
        {
            get
            {
                if (updatePlan == null)
                {
                    updatePlan = new DelegateCommand(UpdateTplan, CanExecute);
                }
                return updatePlan;
            }
        }
        private void UpdateTplan()
        {
            bool aux1 = string.IsNullOrEmpty(Nombre.Value);
            bool aux2 = string.IsNullOrEmpty(Descripcion.Value);
            bool aux3 = string.IsNullOrEmpty(PrecioTPlan.Value);


            if ((aux1) || (aux2) || (aux3))
            {
                Instancias.ModalDialog.ShowHandlerDialog(String.Format("Error en Ingreso de Datos"));
               
            }
            else
            {  if (TipoPlan.Id == 0)
            {
             Instancias.ModalDialog.ShowHandlerDialog(String.Format("Error: Seleccione un Plan mediante consulta"));
            }
            else 
            {
                PlanAux = new TipoPlanDTO();
                PlanAux.Nombre = Nombre.Value;
                PlanAux.PrecioTPlan = PrecioTPlan.Value;
                PlanAux.Descripcion = Descripcion.Value;
                PlanAux.Id = TipoPlan.Id;

                WS.UpdateTPlan(PlanAux);
                Instancias.ModalDialog.ShowHandlerDialog(String.Format("El tipo de plan se ha guardado correctamente."));
                Instancias.FrameContent.Content = new Home();
            }  
                
                   
            }
        }
    
    }
    }

